home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #5 / Amiga Plus CD - 2000 - No. 5.iso / Tools / Dev / fpc / units / exec.pp < prev    next >
Text File  |  2000-01-01  |  35KB  |  1,683 lines

  1. {
  2.     This file is part of the Free Pascal run time library.
  3.  
  4.     A file in Amiga system run time library.
  5.     Copyright (c) 1998 by Nils Sjoholm
  6.     member of the Amiga RTL development team.
  7.  
  8.     See the file COPYING.FPC, included in this distribution,
  9.     for details about the copyright.
  10.  
  11.     This program is distributed in the hope that it will be useful,
  12.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  14.  
  15.  **********************************************************************}
  16.  
  17. {
  18.     History:
  19.     Added overlay functions for Pchar->Strings, functions
  20.     and procedures. Now you can mix PChar and Strings e.g
  21.     OpenLibrary('whatis.library',37). No need to cast to
  22.     a PChar.
  23.  
  24.     12 Oct 1998.
  25.     nils.sjoholm@mailbox.swipnet.se
  26. }
  27.  
  28. UNIT EXEC;
  29.  
  30. {$I amigaoverlays.inc}
  31.  
  32. INTERFACE
  33.  
  34. {$I exec.inc}
  35.  
  36. PROCEDURE AbortIO(ioRequest : pIORequest);
  37. PROCEDURE AddDevice(device : pDevice);
  38. PROCEDURE AddHead(list : pList; node : pNode);
  39. PROCEDURE AddIntServer(intNumber : LONGINT; interrupt : pInterrupt);
  40. PROCEDURE AddLibrary(lib : pLibrary);
  41. PROCEDURE AddMemHandler(memhand : pInterrupt);
  42. PROCEDURE AddMemList(size : ULONG; attributes : ULONG; pri : LONGINT; base : POINTER; 
  43. const name : pCHAR);
  44. PROCEDURE AddPort(port : pMsgPort);
  45. PROCEDURE AddResource(resource : POINTER);
  46. PROCEDURE AddSemaphore(sigSem : pSignalSemaphore);
  47. PROCEDURE AddTail(list : pList; node : pNode);
  48. FUNCTION AddTask(task : pTask; initPC : POINTER; finalPC : POINTER) : POINTER;
  49. PROCEDURE Alert(alertNum : ULONG);
  50. FUNCTION AllocAbs(byteSize : ULONG; location : POINTER) : POINTER;
  51. FUNCTION Allocate(freeList : pMemHeader; byteSize : ULONG) : POINTER;
  52. FUNCTION AllocEntry(entry : pMemList) : pMemList;
  53. FUNCTION AllocMem(byteSize : ULONG; requirements : ULONG) : POINTER;
  54. FUNCTION AllocPooled(poolHeader : POINTER; memSize : ULONG) : POINTER;
  55. FUNCTION AllocSignal(signalNum : LONGINT) : SHORTINT;
  56. FUNCTION AllocTrap(trapNum : LONGINT) : LONGINT;
  57. FUNCTION AllocVec(byteSize : ULONG; requirements : ULONG) : POINTER;
  58. FUNCTION AttemptSemaphore(sigSem : pSignalSemaphore) : BOOLEAN;
  59. FUNCTION AttemptSemaphoreShared(sigSem : pSignalSemaphore) : ULONG;
  60. FUNCTION AvailMem(requirements : ULONG) : ULONG;
  61. PROCEDURE CacheClearE(address : POINTER; length : ULONG; caches : ULONG);
  62. PROCEDURE CacheClearU;
  63. FUNCTION CacheControl(cacheBits : ULONG; cacheMask : ULONG) : ULONG;
  64. PROCEDURE CachePostDMA(address : POINTER; VAR length : ULONG; flags : ULONG);
  65. FUNCTION CachePreDMA(address : POINTER; VAR length : ULONG; flags : ULONG) : POINTER;
  66. PROCEDURE Cause(interrupt : pInterrupt);
  67. FUNCTION CheckIO(ioRequest : pIORequest) : pIORequest;
  68. PROCEDURE ChildFree(tid : POINTER);
  69. PROCEDURE ChildOrphan(tid : POINTER);
  70. PROCEDURE ChildStatus(tid : POINTER);
  71. PROCEDURE ChildWait(tid : POINTER);
  72. PROCEDURE CloseDevice(ioRequest : pIORequest);
  73. PROCEDURE CloseLibrary(lib : pLibrary);
  74. PROCEDURE ColdReboot;
  75. PROCEDURE CopyMem(source : POINTER; dest : POINTER; size : ULONG);
  76. PROCEDURE CopyMemQuick(source : POINTER; dest : POINTER; size : ULONG);
  77. FUNCTION CreateIORequest(port : pMsgPort; size : ULONG) : POINTER;
  78. FUNCTION CreateMsgPort : pMsgPort;
  79. FUNCTION CreatePool(requirements : ULONG; puddleSize : ULONG; threshSize : ULONG) : 
  80. POINTER;
  81. PROCEDURE Deallocate(freeList : pMemHeader; memoryBlock : POINTER; byteSize : ULONG);
  82. PROCEDURE Debug(flags : ULONG);
  83. PROCEDURE DeleteIORequest(iorequest : POINTER);
  84. PROCEDURE DeleteMsgPort(port : pMsgPort);
  85. PROCEDURE DeletePool(poolHeader : POINTER);
  86. PROCEDURE Disable;
  87. FUNCTION DoIO(ioRequest : pIORequest) : SHORTINT;
  88. PROCEDURE Enable;
  89. PROCEDURE Enqueue(list : pList; node : pNode);
  90. PROCEDURE ExecFreeMem(memoryBlock : POINTER; byteSize : ULONG);
  91. PROCEDURE ExecInsert(list : pList; node : pNode; pred : pNode);
  92. FUNCTION FindName(list : pList; const name : pCHAR) : pNode;
  93. FUNCTION FindPort(const name : pCHAR) : pMsgPort;
  94. FUNCTION FindResident(const name : pCHAR) : pResident;
  95. FUNCTION FindSemaphore(const sigSem : pCHAR) : pSignalSemaphore;
  96. FUNCTION FindTask(const name : pCHAR) : pTask;
  97. PROCEDURE Forbid;
  98. PROCEDURE FreeEntry(entry : pMemList);
  99. PROCEDURE FreePooled(poolHeader : POINTER; memory : POINTER; memSize : ULONG);
  100. PROCEDURE FreeSignal(signalNum : LONGINT);
  101. PROCEDURE FreeTrap(trapNum : LONGINT);
  102. PROCEDURE FreeVec(memoryBlock : POINTER);
  103. FUNCTION GetCC : ULONG;
  104. FUNCTION GetMsg(port : pMsgPort) : pMessage;
  105. PROCEDURE InitCode(startClass : ULONG; version : ULONG);
  106. FUNCTION InitResident(resident : pResident; segList : ULONG) : POINTER;
  107. PROCEDURE InitSemaphore(sigSem : pSignalSemaphore);
  108. PROCEDURE InitStruct(initTable : POINTER; memory : POINTER; size : ULONG);
  109. PROCEDURE MakeFunctions(target : POINTER; functionArray : POINTER; funcDispBase : 
  110. ULONG);
  111. FUNCTION MakeLibrary(funcInit : POINTER; structInit : POINTER; libInit : tPROCEDURE; 
  112. dataSize : ULONG; segList : ULONG) : pLibrary;
  113. FUNCTION ObtainQuickVector(interruptCode : POINTER) : ULONG;
  114. PROCEDURE ObtainSemaphore(sigSem : pSignalSemaphore);
  115. PROCEDURE ObtainSemaphoreList(sigSem : pList);
  116. PROCEDURE ObtainSemaphoreShared(sigSem : pSignalSemaphore);
  117. FUNCTION OldOpenLibrary(const libName : pCHAR) : pLibrary;
  118. FUNCTION OpenDevice(const devName : pCHAR; unite : ULONG; ioRequest : pIORequest; 
  119. flags : ULONG) : SHORTINT;
  120. FUNCTION OpenLibrary(const libName : pCHAR; version : ULONG) : pLibrary;
  121. FUNCTION OpenResource(const resName : pCHAR) : POINTER;
  122. PROCEDURE Permit;
  123. FUNCTION Procure(sigSem : pSignalSemaphore; bidMsg : pSemaphoreMessage) : BOOLEAN;
  124. PROCEDURE PutMsg(port : pMsgPort; message : pMessage);
  125. PROCEDURE RawDoFmt(formatString : pCHAR; dataStream : POINTER; putChProc : tPROCEDURE; 
  126. putChData : POINTER);
  127. PROCEDURE ReleaseSemaphore(sigSem : pSignalSemaphore);
  128. PROCEDURE ReleaseSemaphoreList(sigSem : pList);
  129. PROCEDURE RemDevice(device : pDevice);
  130. FUNCTION RemHead(list : pList) : pNode;
  131. PROCEDURE RemIntServer(intNumber : LONGINT; interrupt : pInterrupt);
  132. PROCEDURE RemLibrary(lib : pLibrary);
  133. PROCEDURE RemMemHandler(memhand : pInterrupt);
  134. PROCEDURE Remove(node : pNode);
  135. PROCEDURE RemPort(port : pMsgPort);
  136. PROCEDURE RemResource(resource : POINTER);
  137. PROCEDURE RemSemaphore(sigSem : pSignalSemaphore);
  138. FUNCTION RemTail(list : pList) : pNode;
  139. PROCEDURE RemTask(task : pTask);
  140. PROCEDURE ReplyMsg(message : pMessage);
  141. PROCEDURE SendIO(ioRequest : pIORequest);
  142. FUNCTION SetExcept(newSignals : ULONG; signalSet : ULONG) : ULONG;
  143. FUNCTION SetFunction(lib : pLibrary; funcOffset : LONGINT; newFunction : tPROCEDURE) : 
  144. POINTER;
  145. FUNCTION SetIntVector(intNumber : LONGINT; interrupt : pInterrupt) : pInterrupt;
  146. FUNCTION SetSignal(newSignals : ULONG; signalSet : ULONG) : ULONG;
  147. FUNCTION SetSR(newSR : ULONG; mask : ULONG) : ULONG;
  148. FUNCTION SetTaskPri(task : pTask; priority : LONGINT) : SHORTINT;
  149. PROCEDURE Signal(task : pTask; signalSet : ULONG);
  150. PROCEDURE StackSwap(newStack : pStackSwapStruct);
  151. PROCEDURE SumKickData;
  152. PROCEDURE SumLibrary(lib : pLibrary);
  153. FUNCTION SuperState : POINTER;
  154. FUNCTION Supervisor(userFunction : tPROCEDURE) : ULONG;
  155. FUNCTION TypeOfMem(address : POINTER) : ULONG;
  156. PROCEDURE UserState(sysStack : POINTER);
  157. PROCEDURE Vacate(sigSem : pSignalSemaphore; bidMsg : pSemaphoreMessage);
  158. FUNCTION Wait(signalSet : ULONG) : ULONG;
  159. FUNCTION WaitIO(ioRequest : pIORequest) : SHORTINT;
  160. FUNCTION WaitPort(port : pMsgPort) : pMessage;
  161.  
  162. {$ifdef amiga_overlays}
  163.  
  164. PROCEDURE AddMemList(size : ULONG; attributes : ULONG; pri : LONGINT; base : POINTER; 
  165. const name : String);
  166. FUNCTION FindName(list : pList; const name : String) : pNode;
  167. FUNCTION FindPort(const name : String) : pMsgPort;
  168. FUNCTION FindResident(const name : String) : pResident;
  169. FUNCTION FindSemaphore(const sigSem : String) : pSignalSemaphore;
  170. FUNCTION FindTask(const name : String) : pTask;
  171. FUNCTION OldOpenLibrary(const libName : String) : pLibrary;
  172. FUNCTION OpenDevice(const devName : String; unite : ULONG; ioRequest : pIORequest; 
  173. flags : ULONG) : SHORTINT;
  174. FUNCTION OpenLibrary(const libName : String; version : ULONG) : pLibrary;
  175. FUNCTION OpenResource(const resName : String) : POINTER;
  176. PROCEDURE RawDoFmt(formatString : String; dataStream : POINTER; putChProc : 
  177. tPROCEDURE; putChData : POINTER);
  178.  
  179. {$endif}
  180.  
  181. IMPLEMENTATION
  182.  
  183. {$ifdef amiga_overlays}
  184. uses pastoc;
  185. {$endif}
  186.  
  187. PROCEDURE AbortIO(ioRequest : pIORequest);
  188. BEGIN
  189.   ASM
  190.     MOVE.L  A6,-(A7)
  191.     MOVEA.L ioRequest,A1
  192.     MOVEA.L _ExecBase,A6
  193.     JSR -480(A6)
  194.     MOVEA.L (A7)+,A6
  195.   END;
  196. END;
  197.  
  198. PROCEDURE AddDevice(device : pDevice);
  199. BEGIN
  200.   ASM
  201.     MOVE.L  A6,-(A7)
  202.     MOVEA.L device,A1
  203.     MOVEA.L _ExecBase,A6
  204.     JSR -432(A6)
  205.     MOVEA.L (A7)+,A6
  206.   END;
  207. END;
  208.  
  209. PROCEDURE AddHead(list : pList; node : pNode);
  210. BEGIN
  211.   ASM
  212.     MOVE.L  A6,-(A7)
  213.     MOVEA.L list,A0
  214.     MOVEA.L node,A1
  215.     MOVEA.L _ExecBase,A6
  216.     JSR -240(A6)
  217.     MOVEA.L (A7)+,A6
  218.   END;
  219. END;
  220.  
  221. PROCEDURE AddIntServer(intNumber : LONGINT; interrupt : pInterrupt);
  222. BEGIN
  223.   ASM
  224.     MOVE.L  A6,-(A7)
  225.     MOVE.L  intNumber,D0
  226.     MOVEA.L interrupt,A1
  227.     MOVEA.L _ExecBase,A6
  228.     JSR -168(A6)
  229.     MOVEA.L (A7)+,A6
  230.   END;
  231. END;
  232.  
  233. PROCEDURE AddLibrary(lib : pLibrary);
  234. BEGIN
  235.   ASM
  236.     MOVE.L  A6,-(A7)
  237.     MOVEA.L lib,A1
  238.     MOVEA.L _ExecBase,A6
  239.     JSR -396(A6)
  240.     MOVEA.L (A7)+,A6
  241.   END;
  242. END;
  243.  
  244. PROCEDURE AddMemHandler(memhand : pInterrupt);
  245. BEGIN
  246.   ASM
  247.     MOVE.L  A6,-(A7)
  248.     MOVEA.L memhand,A1
  249.     MOVEA.L _ExecBase,A6
  250.     JSR -774(A6)
  251.     MOVEA.L (A7)+,A6
  252.   END;
  253. END;
  254.  
  255. PROCEDURE AddMemList(size : ULONG; attributes : ULONG; pri : LONGINT; base : POINTER; 
  256. const name : pCHAR);
  257. BEGIN
  258.   ASM
  259.     MOVE.L  A6,-(A7)
  260.     MOVE.L  size,D0
  261.     MOVE.L  attributes,D1
  262.     MOVE.L  pri,D2
  263.     MOVEA.L base,A0
  264.     MOVEA.L name,A1
  265.     MOVEA.L _ExecBase,A6
  266.     JSR -618(A6)
  267.     MOVEA.L (A7)+,A6
  268.   END;
  269. END;
  270.  
  271. PROCEDURE AddPort(port : pMsgPort);
  272. BEGIN
  273.   ASM
  274.     MOVE.L  A6,-(A7)
  275.     MOVEA.L port,A1
  276.     MOVEA.L _ExecBase,A6
  277.     JSR -354(A6)
  278.     MOVEA.L (A7)+,A6
  279.   END;
  280. END;
  281.  
  282. PROCEDURE AddResource(resource : POINTER);
  283. BEGIN
  284.   ASM
  285.     MOVE.L  A6,-(A7)
  286.     MOVEA.L resource,A1
  287.     MOVEA.L _ExecBase,A6
  288.     JSR -486(A6)
  289.     MOVEA.L (A7)+,A6
  290.   END;
  291. END;
  292.  
  293. PROCEDURE AddSemaphore(sigSem : pSignalSemaphore);
  294. BEGIN
  295.   ASM
  296.     MOVE.L  A6,-(A7)
  297.     MOVEA.L sigSem,A1
  298.     MOVEA.L _ExecBase,A6
  299.     JSR -600(A6)
  300.     MOVEA.L (A7)+,A6
  301.   END;
  302. END;
  303.  
  304. PROCEDURE AddTail(list : pList; node : pNode);
  305. BEGIN
  306.   ASM
  307.     MOVE.L  A6,-(A7)
  308.     MOVEA.L list,A0
  309.     MOVEA.L node,A1
  310.     MOVEA.L _ExecBase,A6
  311.     JSR -246(A6)
  312.     MOVEA.L (A7)+,A6
  313.   END;
  314. END;
  315.  
  316. FUNCTION AddTask(task : pTask; initPC : POINTER; finalPC : POINTER) : POINTER;
  317. BEGIN
  318.   ASM
  319.     MOVE.L  A6,-(A7)
  320.     MOVEA.L task,A1
  321.     MOVEA.L initPC,A2
  322.     MOVEA.L finalPC,A3
  323.     MOVEA.L _ExecBase,A6
  324.     JSR -282(A6)
  325.     MOVEA.L (A7)+,A6
  326.     MOVE.L  D0,@RESULT
  327.   END;
  328. END;
  329.  
  330. PROCEDURE Alert(alertNum : ULONG);
  331. BEGIN
  332.   ASM
  333.     MOVE.L  A6,-(A7)
  334.     MOVE.L  alertNum,D7
  335.     MOVEA.L _ExecBase,A6
  336.     JSR -108(A6)
  337.     MOVEA.L (A7)+,A6
  338.   END;
  339. END;
  340.  
  341. FUNCTION AllocAbs(byteSize : ULONG; location : POINTER) : POINTER;
  342. BEGIN
  343.   ASM
  344.     MOVE.L  A6,-(A7)
  345.     MOVE.L  byteSize,D0
  346.     MOVEA.L location,A1
  347.     MOVEA.L _ExecBase,A6
  348.     JSR -204(A6)
  349.     MOVEA.L (A7)+,A6
  350.     MOVE.L  D0,@RESULT
  351.   END;
  352. END;
  353.  
  354. FUNCTION Allocate(freeList : pMemHeader; byteSize : ULONG) : POINTER;
  355. BEGIN
  356.   ASM
  357.     MOVE.L  A6,-(A7)
  358.     MOVEA.L freeList,A0
  359.     MOVE.L  byteSize,D0
  360.     MOVEA.L _ExecBase,A6
  361.     JSR -186(A6)
  362.     MOVEA.L (A7)+,A6
  363.     MOVE.L  D0,@RESULT
  364.   END;
  365. END;
  366.  
  367. FUNCTION AllocEntry(entry : pMemList) : pMemList;
  368. BEGIN
  369.   ASM
  370.     MOVE.L  A6,-(A7)
  371.     MOVEA.L entry,A0
  372.     MOVEA.L _ExecBase,A6
  373.     JSR -222(A6)
  374.     MOVEA.L (A7)+,A6
  375.     MOVE.L  D0,@RESULT
  376.   END;
  377. END;
  378.  
  379. FUNCTION AllocMem(byteSize : ULONG; requirements : ULONG) : POINTER;
  380. BEGIN
  381.   ASM
  382.     MOVE.L  A6,-(A7)
  383.     MOVE.L  byteSize,D0
  384.     MOVE.L  requirements,D1
  385.     MOVEA.L _ExecBase,A6
  386.     JSR -198(A6)
  387.     MOVEA.L (A7)+,A6
  388.     MOVE.L  D0,@RESULT
  389.   END;
  390. END;
  391.  
  392. FUNCTION AllocPooled(poolHeader : POINTER; memSize : ULONG) : POINTER;
  393. BEGIN
  394.   ASM
  395.     MOVE.L  A6,-(A7)
  396.     MOVEA.L poolHeader,A0
  397.     MOVE.L  memSize,D0
  398.     MOVEA.L _ExecBase,A6
  399.     JSR -708(A6)
  400.     MOVEA.L (A7)+,A6
  401.     MOVE.L  D0,@RESULT
  402.   END;
  403. END;
  404.  
  405. FUNCTION AllocSignal(signalNum : LONGINT) : SHORTINT;
  406. BEGIN
  407.   ASM
  408.     MOVE.L  A6,-(A7)
  409.     MOVE.L  signalNum,D0
  410.     MOVEA.L _ExecBase,A6
  411.     JSR -330(A6)
  412.     MOVEA.L (A7)+,A6
  413.     MOVE.L  D0,@RESULT
  414.   END;
  415. END;
  416.  
  417. FUNCTION AllocTrap(trapNum : LONGINT) : LONGINT;
  418. BEGIN
  419.   ASM
  420.     MOVE.L  A6,-(A7)
  421.     MOVE.L  trapNum,D0
  422.     MOVEA.L _ExecBase,A6
  423.     JSR -342(A6)
  424.     MOVEA.L (A7)+,A6
  425.     MOVE.L  D0,@RESULT
  426.   END;
  427. END;
  428.  
  429. FUNCTION AllocVec(byteSize : ULONG; requirements : ULONG) : POINTER;
  430. BEGIN
  431.   ASM
  432.     MOVE.L  A6,-(A7)
  433.     MOVE.L  byteSize,D0
  434.     MOVE.L  requirements,D1
  435.     MOVEA.L _ExecBase,A6
  436.     JSR -684(A6)
  437.     MOVEA.L (A7)+,A6
  438.     MOVE.L  D0,@RESULT
  439.   END;
  440. END;
  441.  
  442. FUNCTION AttemptSemaphore(sigSem : pSignalSemaphore) : BOOLEAN;
  443. BEGIN
  444.   ASM
  445.     MOVE.L  A6,-(A7)
  446.     MOVEA.L sigSem,A0
  447.     MOVEA.L _ExecBase,A6
  448.     JSR -576(A6)
  449.     MOVEA.L (A7)+,A6
  450.     TST.L   D0
  451.     BEQ.B   @end
  452.     MOVEQ   #1,D0
  453.     @end: MOVE.B  D0,@RESULT
  454.   END;
  455. END;
  456.  
  457. FUNCTION AttemptSemaphoreShared(sigSem : pSignalSemaphore) : ULONG;
  458. BEGIN
  459.   ASM
  460.     MOVE.L  A6,-(A7)
  461.     MOVEA.L sigSem,A0
  462.     MOVEA.L _ExecBase,A6
  463.     JSR -720(A6)
  464.     MOVEA.L (A7)+,A6
  465.     MOVE.L  D0,@RESULT
  466.   END;
  467. END;
  468.  
  469. FUNCTION AvailMem(requirements : ULONG) : ULONG;
  470. BEGIN
  471.   ASM
  472.     MOVE.L  A6,-(A7)
  473.     MOVE.L  requirements,D1
  474.     MOVEA.L _ExecBase,A6
  475.     JSR -216(A6)
  476.     MOVEA.L (A7)+,A6
  477.     MOVE.L  D0,@RESULT
  478.   END;
  479. END;
  480.  
  481. PROCEDURE CacheClearE(address : POINTER; length : ULONG; caches : ULONG);
  482. BEGIN
  483.   ASM
  484.     MOVE.L  A6,-(A7)
  485.     MOVEA.L address,A0
  486.     MOVE.L  length,D0
  487.     MOVE.L  caches,D1
  488.     MOVEA.L _ExecBase,A6
  489.     JSR -642(A6)
  490.     MOVEA.L (A7)+,A6
  491.   END;
  492. END;
  493.  
  494. PROCEDURE CacheClearU;
  495. BEGIN
  496.   ASM
  497.     MOVE.L  A6,-(A7)
  498.     MOVEA.L _ExecBase,A6
  499.     JSR -636(A6)
  500.     MOVEA.L (A7)+,A6
  501.   END;
  502. END;
  503.  
  504. FUNCTION CacheControl(cacheBits : ULONG; cacheMask : ULONG) : ULONG;
  505. BEGIN
  506.   ASM
  507.     MOVE.L  A6,-(A7)
  508.     MOVE.L  cacheBits,D0
  509.     MOVE.L  cacheMask,D1
  510.     MOVEA.L _ExecBase,A6
  511.     JSR -648(A6)
  512.     MOVEA.L (A7)+,A6
  513.     MOVE.L  D0,@RESULT
  514.   END;
  515. END;
  516.  
  517. PROCEDURE CachePostDMA(address : POINTER; VAR length : ULONG; flags : ULONG);
  518. BEGIN
  519.   ASM
  520.     MOVE.L  A6,-(A7)
  521.     MOVEA.L address,A0
  522.     MOVEA.L length,A1
  523.     MOVE.L  flags,D0
  524.     MOVEA.L _ExecBase,A6
  525.     JSR -768(A6)
  526.     MOVEA.L (A7)+,A6
  527.   END;
  528. END;
  529.  
  530. FUNCTION CachePreDMA(address : POINTER; VAR length : ULONG; flags : ULONG) : POINTER;
  531. BEGIN
  532.   ASM
  533.     MOVE.L  A6,-(A7)
  534.     MOVEA.L address,A0
  535.     MOVEA.L length,A1
  536.     MOVE.L  flags,D0
  537.     MOVEA.L _ExecBase,A6
  538.     JSR -762(A6)
  539.     MOVEA.L (A7)+,A6
  540.     MOVE.L  D0,@RESULT
  541.   END;
  542. END;
  543.  
  544. PROCEDURE Cause(interrupt : pInterrupt);
  545. BEGIN
  546.   ASM
  547.     MOVE.L  A6,-(A7)
  548.     MOVEA.L interrupt,A1
  549.     MOVEA.L _ExecBase,A6
  550.     JSR -180(A6)
  551.     MOVEA.L (A7)+,A6
  552.   END;
  553. END;
  554.  
  555. FUNCTION CheckIO(ioRequest : pIORequest) : pIORequest;
  556. BEGIN
  557.   ASM
  558.     MOVE.L  A6,-(A7)
  559.     MOVEA.L ioRequest,A1
  560.     MOVEA.L _ExecBase,A6
  561.     JSR -468(A6)
  562.     MOVEA.L (A7)+,A6
  563.     MOVE.L  D0,@RESULT
  564.   END;
  565. END;
  566.  
  567. PROCEDURE ChildFree(tid : POINTER);
  568. BEGIN
  569.   ASM
  570.     MOVE.L  A6,-(A7)
  571.     MOVE.L  tid,D0
  572.     MOVEA.L _ExecBase,A6
  573.     JSR -738(A6)
  574.     MOVEA.L (A7)+,A6
  575.   END;
  576. END;
  577.  
  578. PROCEDURE ChildOrphan(tid : POINTER);
  579. BEGIN
  580.   ASM
  581.     MOVE.L  A6,-(A7)
  582.     MOVE.L  tid,D0
  583.     MOVEA.L _ExecBase,A6
  584.     JSR -744(A6)
  585.     MOVEA.L (A7)+,A6
  586.   END;
  587. END;
  588.  
  589. PROCEDURE ChildStatus(tid : POINTER);
  590. BEGIN
  591.   ASM
  592.     MOVE.L  A6,-(A7)
  593.     MOVE.L  tid,D0
  594.     MOVEA.L _ExecBase,A6
  595.     JSR -750(A6)
  596.     MOVEA.L (A7)+,A6
  597.   END;
  598. END;
  599.  
  600. PROCEDURE ChildWait(tid : POINTER);
  601. BEGIN
  602.   ASM
  603.     MOVE.L  A6,-(A7)
  604.     MOVE.L  tid,D0
  605.     MOVEA.L _ExecBase,A6
  606.     JSR -756(A6)
  607.     MOVEA.L (A7)+,A6
  608.   END;
  609. END;
  610.  
  611. PROCEDURE CloseDevice(ioRequest : pIORequest);
  612. BEGIN
  613.   ASM
  614.     MOVE.L  A6,-(A7)
  615.     MOVEA.L ioRequest,A1
  616.     MOVEA.L _ExecBase,A6
  617.     JSR -450(A6)
  618.     MOVEA.L (A7)+,A6
  619.   END;
  620. END;
  621.  
  622. PROCEDURE CloseLibrary(lib : pLibrary);
  623. BEGIN
  624.   ASM
  625.     MOVE.L  A6,-(A7)
  626.     MOVEA.L lib,A1
  627.     MOVEA.L _ExecBase,A6
  628.     JSR -414(A6)
  629.     MOVEA.L (A7)+,A6
  630.   END;
  631. END;
  632.  
  633. PROCEDURE ColdReboot;
  634. BEGIN
  635.   ASM
  636.     MOVE.L  A6,-(A7)
  637.     MOVEA.L _ExecBase,A6
  638.     JSR -726(A6)
  639.     MOVEA.L (A7)+,A6
  640.   END;
  641. END;
  642.  
  643. PROCEDURE CopyMem(source : POINTER; dest : POINTER; size : ULONG);
  644. BEGIN
  645.   ASM
  646.     MOVE.L  A6,-(A7)
  647.     MOVEA.L source,A0
  648.     MOVEA.L dest,A1
  649.     MOVE.L  size,D0
  650.     MOVEA.L _ExecBase,A6
  651.     JSR -624(A6)
  652.     MOVEA.L (A7)+,A6
  653.   END;
  654. END;
  655.  
  656. PROCEDURE CopyMemQuick(source : POINTER; dest : POINTER; size : ULONG);
  657. BEGIN
  658.   ASM
  659.     MOVE.L  A6,-(A7)
  660.     MOVEA.L source,A0
  661.     MOVEA.L dest,A1
  662.     MOVE.L  size,D0
  663.     MOVEA.L _ExecBase,A6
  664.     JSR -630(A6)
  665.     MOVEA.L (A7)+,A6
  666.   END;
  667. END;
  668.  
  669. FUNCTION CreateIORequest(port : pMsgPort; size : ULONG) : POINTER;
  670. BEGIN
  671.   ASM
  672.     MOVE.L  A6,-(A7)
  673.     MOVEA.L port,A0
  674.     MOVE.L  size,D0
  675.     MOVEA.L _ExecBase,A6
  676.     JSR -654(A6)
  677.     MOVEA.L (A7)+,A6
  678.     MOVE.L  D0,@RESULT
  679.   END;
  680. END;
  681.  
  682. FUNCTION CreateMsgPort : pMsgPort;
  683. BEGIN
  684.   ASM
  685.     MOVE.L  A6,-(A7)
  686.     MOVEA.L _ExecBase,A6
  687.     JSR -666(A6)
  688.     MOVEA.L (A7)+,A6
  689.     MOVE.L  D0,@RESULT
  690.   END;
  691. END;
  692.  
  693. FUNCTION CreatePool(requirements : ULONG; puddleSize : ULONG; threshSize : ULONG) : 
  694. POINTER;
  695. BEGIN
  696.   ASM
  697.     MOVE.L  A6,-(A7)
  698.     MOVE.L  requirements,D0
  699.     MOVE.L  puddleSize,D1
  700.     MOVE.L  threshSize,D2
  701.     MOVEA.L _ExecBase,A6
  702.     JSR -696(A6)
  703.     MOVEA.L (A7)+,A6
  704.     MOVE.L  D0,@RESULT
  705.   END;
  706. END;
  707.  
  708. PROCEDURE Deallocate(freeList : pMemHeader; memoryBlock : POINTER; byteSize : ULONG);
  709. BEGIN
  710.   ASM
  711.     MOVE.L  A6,-(A7)
  712.     MOVEA.L freeList,A0
  713.     MOVEA.L memoryBlock,A1
  714.     MOVE.L  byteSize,D0
  715.     MOVEA.L _ExecBase,A6
  716.     JSR -192(A6)
  717.     MOVEA.L (A7)+,A6
  718.   END;
  719. END;
  720.  
  721. PROCEDURE Debug(flags : ULONG);
  722. BEGIN
  723.   ASM
  724.     MOVE.L  A6,-(A7)
  725.     MOVE.L  flags,D0
  726.     MOVEA.L _ExecBase,A6
  727.     JSR -114(A6)
  728.     MOVEA.L (A7)+,A6
  729.   END;
  730. END;
  731.  
  732. PROCEDURE DeleteIORequest(iorequest : POINTER);
  733. BEGIN
  734.   ASM
  735.     MOVE.L  A6,-(A7)
  736.     MOVEA.L iorequest,A0
  737.     MOVEA.L _ExecBase,A6
  738.     JSR -660(A6)
  739.     MOVEA.L (A7)+,A6
  740.   END;
  741. END;
  742.  
  743. PROCEDURE DeleteMsgPort(port : pMsgPort);
  744. BEGIN
  745.   ASM
  746.     MOVE.L  A6,-(A7)
  747.     MOVEA.L port,A0
  748.     MOVEA.L _ExecBase,A6
  749.     JSR -672(A6)
  750.     MOVEA.L (A7)+,A6
  751.   END;
  752. END;
  753.  
  754. PROCEDURE DeletePool(poolHeader : POINTER);
  755. BEGIN
  756.   ASM
  757.     MOVE.L  A6,-(A7)
  758.     MOVEA.L poolHeader,A0
  759.     MOVEA.L _ExecBase,A6
  760.     JSR -702(A6)
  761.     MOVEA.L (A7)+,A6
  762.   END;
  763. END;
  764.  
  765. PROCEDURE Disable;
  766. BEGIN
  767.   ASM
  768.     MOVE.L  A6,-(A7)
  769.     MOVEA.L _ExecBase,A6
  770.     JSR -120(A6)
  771.     MOVEA.L (A7)+,A6
  772.   END;
  773. END;
  774.  
  775. FUNCTION DoIO(ioRequest : pIORequest) : SHORTINT;
  776. BEGIN
  777.   ASM
  778.     MOVE.L  A6,-(A7)
  779.     MOVEA.L ioRequest,A1
  780.     MOVEA.L _ExecBase,A6
  781.     JSR -456(A6)
  782.     MOVEA.L (A7)+,A6
  783.     MOVE.L  D0,@RESULT
  784.   END;
  785. END;
  786.  
  787. PROCEDURE Enable;
  788. BEGIN
  789.   ASM
  790.     MOVE.L  A6,-(A7)
  791.     MOVEA.L _ExecBase,A6
  792.     JSR -126(A6)
  793.     MOVEA.L (A7)+,A6
  794.   END;
  795. END;
  796.  
  797. PROCEDURE Enqueue(list : pList; node : pNode);
  798. BEGIN
  799.   ASM
  800.     MOVE.L  A6,-(A7)
  801.     MOVEA.L list,A0
  802.     MOVEA.L node,A1
  803.     MOVEA.L _ExecBase,A6
  804.     JSR -270(A6)
  805.     MOVEA.L (A7)+,A6
  806.   END;
  807. END;
  808.  
  809. PROCEDURE ExecFreeMem(memoryBlock : POINTER; byteSize : ULONG);
  810. BEGIN
  811.   ASM
  812.     MOVE.L  A6,-(A7)
  813.     MOVEA.L memoryBlock,A1
  814.     MOVE.L  byteSize,D0
  815.     MOVEA.L _ExecBase,A6
  816.     JSR -210(A6)
  817.     MOVEA.L (A7)+,A6
  818.   END;
  819. END;
  820.  
  821. PROCEDURE ExecInsert(list : pList; node : pNode; pred : pNode);
  822. BEGIN
  823.   ASM
  824.     MOVE.L  A6,-(A7)
  825.     MOVEA.L list,A0
  826.     MOVEA.L node,A1
  827.     MOVEA.L pred,A2
  828.     MOVEA.L _ExecBase,A6
  829.     JSR -234(A6)
  830.     MOVEA.L (A7)+,A6
  831.   END;
  832. END;
  833.  
  834. FUNCTION FindName(list : pList; const name : pCHAR) : pNode;
  835. BEGIN
  836.   ASM
  837.     MOVE.L  A6,-(A7)
  838.     MOVEA.L list,A0
  839.     MOVEA.L name,A1
  840.     MOVEA.L _ExecBase,A6
  841.     JSR -276(A6)
  842.     MOVEA.L (A7)+,A6
  843.     MOVE.L  D0,@RESULT
  844.   END;
  845. END;
  846.  
  847. FUNCTION FindPort(const name : pCHAR) : pMsgPort;
  848. BEGIN
  849.   ASM
  850.     MOVE.L  A6,-(A7)
  851.     MOVEA.L name,A1
  852.     MOVEA.L _ExecBase,A6
  853.     JSR -390(A6)
  854.     MOVEA.L (A7)+,A6
  855.     MOVE.L  D0,@RESULT
  856.   END;
  857. END;
  858.  
  859. FUNCTION FindResident(const name : pCHAR) : pResident;
  860. BEGIN
  861.   ASM
  862.     MOVE.L  A6,-(A7)
  863.     MOVEA.L name,A1
  864.     MOVEA.L _ExecBase,A6
  865.     JSR -096(A6)
  866.     MOVEA.L (A7)+,A6
  867.     MOVE.L  D0,@RESULT
  868.   END;
  869. END;
  870.  
  871. FUNCTION FindSemaphore(const sigSem : pCHAR) : pSignalSemaphore;
  872. BEGIN
  873.   ASM
  874.     MOVE.L  A6,-(A7)
  875.     MOVEA.L sigSem,A1
  876.     MOVEA.L _ExecBase,A6
  877.     JSR -594(A6)
  878.     MOVEA.L (A7)+,A6
  879.     MOVE.L  D0,@RESULT
  880.   END;
  881. END;
  882.  
  883. FUNCTION FindTask(const name : pCHAR) : pTask;
  884. BEGIN
  885.   ASM
  886.     MOVE.L  A6,-(A7)
  887.     MOVEA.L name,A1
  888.     MOVEA.L _ExecBase,A6
  889.     JSR -294(A6)
  890.     MOVEA.L (A7)+,A6
  891.     MOVE.L  D0,@RESULT
  892.   END;
  893. END;
  894.  
  895. PROCEDURE Forbid;
  896. BEGIN
  897.   ASM
  898.     MOVE.L  A6,-(A7)
  899.     MOVEA.L _ExecBase,A6
  900.     JSR -132(A6)
  901.     MOVEA.L (A7)+,A6
  902.   END;
  903. END;
  904.  
  905. PROCEDURE FreeEntry(entry : pMemList);
  906. BEGIN
  907.   ASM
  908.     MOVE.L  A6,-(A7)
  909.     MOVEA.L entry,A0
  910.     MOVEA.L _ExecBase,A6
  911.     JSR -228(A6)
  912.     MOVEA.L (A7)+,A6
  913.   END;
  914. END;
  915.  
  916. PROCEDURE FreePooled(poolHeader : POINTER; memory : POINTER; memSize : ULONG);
  917. BEGIN
  918.   ASM
  919.     MOVE.L  A6,-(A7)
  920.     MOVEA.L poolHeader,A0
  921.     MOVEA.L memory,A1
  922.     MOVE.L  memSize,D0
  923.     MOVEA.L _ExecBase,A6
  924.     JSR -714(A6)
  925.     MOVEA.L (A7)+,A6
  926.   END;
  927. END;
  928.  
  929. PROCEDURE FreeSignal(signalNum : LONGINT);
  930. BEGIN
  931.   ASM
  932.     MOVE.L  A6,-(A7)
  933.     MOVE.L  signalNum,D0
  934.     MOVEA.L _ExecBase,A6
  935.     JSR -336(A6)
  936.     MOVEA.L (A7)+,A6
  937.   END;
  938. END;
  939.  
  940. PROCEDURE FreeTrap(trapNum : LONGINT);
  941. BEGIN
  942.   ASM
  943.     MOVE.L  A6,-(A7)
  944.     MOVE.L  trapNum,D0
  945.     MOVEA.L _ExecBase,A6
  946.     JSR -348(A6)
  947.     MOVEA.L (A7)+,A6
  948.   END;
  949. END;
  950.  
  951. PROCEDURE FreeVec(memoryBlock : POINTER);
  952. BEGIN
  953.   ASM
  954.     MOVE.L  A6,-(A7)
  955.     MOVEA.L memoryBlock,A1
  956.     MOVEA.L _ExecBase,A6
  957.     JSR -690(A6)
  958.     MOVEA.L (A7)+,A6
  959.   END;
  960. END;
  961.  
  962. FUNCTION GetCC : ULONG;
  963. BEGIN
  964.   ASM
  965.     MOVE.L  A6,-(A7)
  966.     MOVEA.L _ExecBase,A6
  967.     JSR -528(A6)
  968.     MOVEA.L (A7)+,A6
  969.     MOVE.L  D0,@RESULT
  970.   END;
  971. END;
  972.  
  973. FUNCTION GetMsg(port : pMsgPort) : pMessage;
  974. BEGIN
  975.   ASM
  976.     MOVE.L  A6,-(A7)
  977.     MOVEA.L port,A0
  978.     MOVEA.L _ExecBase,A6
  979.     JSR -372(A6)
  980.     MOVEA.L (A7)+,A6
  981.     MOVE.L  D0,@RESULT
  982.   END;
  983. END;
  984.  
  985. PROCEDURE InitCode(startClass : ULONG; version : ULONG);
  986. BEGIN
  987.   ASM
  988.     MOVE.L  A6,-(A7)
  989.     MOVE.L  startClass,D0
  990.     MOVE.L  version,D1
  991.     MOVEA.L _ExecBase,A6
  992.     JSR -072(A6)
  993.     MOVEA.L (A7)+,A6
  994.   END;
  995. END;
  996.  
  997. FUNCTION InitResident(resident : pResident; segList : ULONG) : POINTER;
  998. BEGIN
  999.   ASM
  1000.     MOVE.L  A6,-(A7)
  1001.     MOVEA.L resident,A1
  1002.     MOVE.L  segList,D1
  1003.     MOVEA.L _ExecBase,A6
  1004.     JSR -102(A6)
  1005.     MOVEA.L (A7)+,A6
  1006.     MOVE.L  D0,@RESULT
  1007.   END;
  1008. END;
  1009.  
  1010. PROCEDURE InitSemaphore(sigSem : pSignalSemaphore);
  1011. BEGIN
  1012.   ASM
  1013.     MOVE.L  A6,-(A7)
  1014.     MOVEA.L sigSem,A0
  1015.     MOVEA.L _ExecBase,A6
  1016.     JSR -558(A6)
  1017.     MOVEA.L (A7)+,A6
  1018.   END;
  1019. END;
  1020.  
  1021. PROCEDURE InitStruct(initTable : POINTER; memory : POINTER; size : ULONG);
  1022. BEGIN
  1023.   ASM
  1024.     MOVE.L  A6,-(A7)
  1025.     MOVEA.L initTable,A1
  1026.     MOVEA.L memory,A2
  1027.     MOVE.L  size,D0
  1028.     MOVEA.L _ExecBase,A6
  1029.     JSR -078(A6)
  1030.     MOVEA.L (A7)+,A6
  1031.   END;
  1032. END;
  1033.  
  1034. PROCEDURE MakeFunctions(target : POINTER; functionArray : POINTER; funcDispBase : 
  1035. ULONG);
  1036. BEGIN
  1037.   ASM
  1038.     MOVE.L  A6,-(A7)
  1039.     MOVEA.L target,A0
  1040.     MOVEA.L functionArray,A1
  1041.     MOVEA.L funcDispBase,A2
  1042.     MOVEA.L _ExecBase,A6
  1043.     JSR -090(A6)
  1044.     MOVEA.L (A7)+,A6
  1045.   END;
  1046. END;
  1047.  
  1048. FUNCTION MakeLibrary(funcInit : POINTER; structInit : POINTER; libInit : tPROCEDURE; 
  1049. dataSize : ULONG; segList : ULONG) : pLibrary;
  1050. BEGIN
  1051.   ASM
  1052.     MOVE.L  A6,-(A7)
  1053.     MOVEA.L funcInit,A0
  1054.     MOVEA.L structInit,A1
  1055.     MOVEA.L libInit,A2
  1056.     MOVE.L  dataSize,D0
  1057.     MOVE.L  segList,D1
  1058.     MOVEA.L _ExecBase,A6
  1059.     JSR -084(A6)
  1060.     MOVEA.L (A7)+,A6
  1061.     MOVE.L  D0,@RESULT
  1062.   END;
  1063. END;
  1064.  
  1065. FUNCTION ObtainQuickVector(interruptCode : POINTER) : ULONG;
  1066. BEGIN
  1067.   ASM
  1068.     MOVE.L  A6,-(A7)
  1069.     MOVEA.L interruptCode,A0
  1070.     MOVEA.L _ExecBase,A6
  1071.     JSR -786(A6)
  1072.     MOVEA.L (A7)+,A6
  1073.     MOVE.L  D0,@RESULT
  1074.   END;
  1075. END;
  1076.  
  1077. PROCEDURE ObtainSemaphore(sigSem : pSignalSemaphore);
  1078. BEGIN
  1079.   ASM
  1080.     MOVE.L  A6,-(A7)
  1081.     MOVEA.L sigSem,A0
  1082.     MOVEA.L _ExecBase,A6
  1083.     JSR -564(A6)
  1084.     MOVEA.L (A7)+,A6
  1085.   END;
  1086. END;
  1087.  
  1088. PROCEDURE ObtainSemaphoreList(sigSem : pList);
  1089. BEGIN
  1090.   ASM
  1091.     MOVE.L  A6,-(A7)
  1092.     MOVEA.L sigSem,A0
  1093.     MOVEA.L _ExecBase,A6
  1094.     JSR -582(A6)
  1095.     MOVEA.L (A7)+,A6
  1096.   END;
  1097. END;
  1098.  
  1099. PROCEDURE ObtainSemaphoreShared(sigSem : pSignalSemaphore);
  1100. BEGIN
  1101.   ASM
  1102.     MOVE.L  A6,-(A7)
  1103.     MOVEA.L sigSem,A0
  1104.     MOVEA.L _ExecBase,A6
  1105.     JSR -678(A6)
  1106.     MOVEA.L (A7)+,A6
  1107.   END;
  1108. END;
  1109.  
  1110. FUNCTION OldOpenLibrary(const libName : pCHAR) : pLibrary;
  1111. BEGIN
  1112.   ASM
  1113.     MOVE.L  A6,-(A7)
  1114.     MOVEA.L libName,A1
  1115.     MOVEA.L _ExecBase,A6
  1116.     JSR -408(A6)
  1117.     MOVEA.L (A7)+,A6
  1118.     MOVE.L  D0,@RESULT
  1119.   END;
  1120. END;
  1121.  
  1122. FUNCTION OpenDevice(const devName : pCHAR; unite : ULONG; ioRequest : pIORequest; 
  1123. flags : ULONG) : SHORTINT;
  1124. BEGIN
  1125.   ASM
  1126.     MOVE.L  A6,-(A7)
  1127.     MOVEA.L devName,A0
  1128.     MOVE.L  unite,D0
  1129.     MOVEA.L ioRequest,A1
  1130.     MOVE.L  flags,D1
  1131.     MOVEA.L _ExecBase,A6
  1132.     JSR -444(A6)
  1133.     MOVEA.L (A7)+,A6
  1134.     MOVE.L  D0,@RESULT
  1135.   END;
  1136. END;
  1137.  
  1138. FUNCTION OpenLibrary(const libName : pCHAR; version : ULONG) : pLibrary;
  1139. BEGIN
  1140.   ASM
  1141.     MOVE.L  A6,-(A7)
  1142.     MOVEA.L libName,A1
  1143.     MOVE.L  version,D0
  1144.     MOVEA.L _ExecBase,A6
  1145.     JSR -552(A6)
  1146.     MOVEA.L (A7)+,A6
  1147.     MOVE.L  D0,@RESULT
  1148.   END;
  1149. END;
  1150.  
  1151. FUNCTION OpenResource(const resName : pCHAR) : POINTER;
  1152. BEGIN
  1153.   ASM
  1154.     MOVE.L  A6,-(A7)
  1155.     MOVEA.L resName,A1
  1156.     MOVEA.L _ExecBase,A6
  1157.     JSR -498(A6)
  1158.     MOVEA.L (A7)+,A6
  1159.     MOVE.L  D0,@RESULT
  1160.   END;
  1161. END;
  1162.  
  1163. PROCEDURE Permit;
  1164. BEGIN
  1165.   ASM
  1166.     MOVE.L  A6,-(A7)
  1167.     MOVEA.L _ExecBase,A6
  1168.     JSR -138(A6)
  1169.     MOVEA.L (A7)+,A6
  1170.   END;
  1171. END;
  1172.  
  1173. FUNCTION Procure(sigSem : pSignalSemaphore; bidMsg : pSemaphoreMessage) : BOOLEAN;
  1174. BEGIN
  1175.   ASM
  1176.     MOVE.L  A6,-(A7)
  1177.     MOVEA.L sigSem,A0
  1178.     MOVEA.L bidMsg,A1
  1179.     MOVEA.L _ExecBase,A6
  1180.     JSR -540(A6)
  1181.     MOVEA.L (A7)+,A6
  1182.     TST.L   D0
  1183.     BEQ.B   @end
  1184.     MOVEQ   #1,D0
  1185.     @end: MOVE.B  D0,@RESULT
  1186.   END;
  1187. END;
  1188.  
  1189. PROCEDURE PutMsg(port : pMsgPort; message : pMessage);
  1190. BEGIN
  1191.   ASM
  1192.     MOVE.L  A6,-(A7)
  1193.     MOVEA.L port,A0
  1194.     MOVEA.L message,A1
  1195.     MOVEA.L _ExecBase,A6
  1196.     JSR -366(A6)
  1197.     MOVEA.L (A7)+,A6
  1198.   END;
  1199. END;
  1200.  
  1201. PROCEDURE RawDoFmt(formatString : pCHAR; dataStream : POINTER; putChProc : tPROCEDURE; 
  1202. putChData : POINTER);
  1203. BEGIN
  1204.   ASM
  1205.     MOVE.L  A6,-(A7)
  1206.     MOVEA.L formatString,A0
  1207.     MOVEA.L dataStream,A1
  1208.     MOVEA.L putChProc,A2
  1209.     MOVEA.L putChData,A3
  1210.     MOVEA.L _ExecBase,A6
  1211.     JSR -522(A6)
  1212.     MOVEA.L (A7)+,A6
  1213.   END;
  1214. END;
  1215.  
  1216. PROCEDURE ReleaseSemaphore(sigSem : pSignalSemaphore);
  1217. BEGIN
  1218.   ASM
  1219.     MOVE.L  A6,-(A7)
  1220.     MOVEA.L sigSem,A0
  1221.     MOVEA.L _ExecBase,A6
  1222.     JSR -570(A6)
  1223.     MOVEA.L (A7)+,A6
  1224.   END;
  1225. END;
  1226.  
  1227. PROCEDURE ReleaseSemaphoreList(sigSem : pList);
  1228. BEGIN
  1229.   ASM
  1230.     MOVE.L  A6,-(A7)
  1231.     MOVEA.L sigSem,A0
  1232.     MOVEA.L _ExecBase,A6
  1233.     JSR -588(A6)
  1234.     MOVEA.L (A7)+,A6
  1235.   END;
  1236. END;
  1237.  
  1238. PROCEDURE RemDevice(device : pDevice);
  1239. BEGIN
  1240.   ASM
  1241.     MOVE.L  A6,-(A7)
  1242.     MOVEA.L device,A1
  1243.     MOVEA.L _ExecBase,A6
  1244.     JSR -438(A6)
  1245.     MOVEA.L (A7)+,A6
  1246.   END;
  1247. END;
  1248.  
  1249. FUNCTION RemHead(list : pList) : pNode;
  1250. BEGIN
  1251.   ASM
  1252.     MOVE.L  A6,-(A7)
  1253.     MOVEA.L list,A0
  1254.     MOVEA.L _ExecBase,A6
  1255.     JSR -258(A6)
  1256.     MOVEA.L (A7)+,A6
  1257.     MOVE.L  D0,@RESULT
  1258.   END;
  1259. END;
  1260.  
  1261. PROCEDURE RemIntServer(intNumber : LONGINT; interrupt : pInterrupt);
  1262. BEGIN
  1263.   ASM
  1264.     MOVE.L  A6,-(A7)
  1265.     MOVE.L  intNumber,D0
  1266.     MOVEA.L interrupt,A1
  1267.     MOVEA.L _ExecBase,A6
  1268.     JSR -174(A6)
  1269.     MOVEA.L (A7)+,A6
  1270.   END;
  1271. END;
  1272.  
  1273. PROCEDURE RemLibrary(lib : pLibrary);
  1274. BEGIN
  1275.   ASM
  1276.     MOVE.L  A6,-(A7)
  1277.     MOVEA.L lib,A1
  1278.     MOVEA.L _ExecBase,A6
  1279.     JSR -402(A6)
  1280.     MOVEA.L (A7)+,A6
  1281.   END;
  1282. END;
  1283.  
  1284. PROCEDURE RemMemHandler(memhand : pInterrupt);
  1285. BEGIN
  1286.   ASM
  1287.     MOVE.L  A6,-(A7)
  1288.     MOVEA.L memhand,A1
  1289.     MOVEA.L _ExecBase,A6
  1290.     JSR -780(A6)
  1291.     MOVEA.L (A7)+,A6
  1292.   END;
  1293. END;
  1294.  
  1295. PROCEDURE Remove(node : pNode);
  1296. BEGIN
  1297.   ASM
  1298.     MOVE.L  A6,-(A7)
  1299.     MOVEA.L node,A1
  1300.     MOVEA.L _ExecBase,A6
  1301.     JSR -252(A6)
  1302.     MOVEA.L (A7)+,A6
  1303.   END;
  1304. END;
  1305.  
  1306. PROCEDURE RemPort(port : pMsgPort);
  1307. BEGIN
  1308.   ASM
  1309.     MOVE.L  A6,-(A7)
  1310.     MOVEA.L port,A1
  1311.     MOVEA.L _ExecBase,A6
  1312.     JSR -360(A6)
  1313.     MOVEA.L (A7)+,A6
  1314.   END;
  1315. END;
  1316.  
  1317. PROCEDURE RemResource(resource : POINTER);
  1318. BEGIN
  1319.   ASM
  1320.     MOVE.L  A6,-(A7)
  1321.     MOVEA.L resource,A1
  1322.     MOVEA.L _ExecBase,A6
  1323.     JSR -492(A6)
  1324.     MOVEA.L (A7)+,A6
  1325.   END;
  1326. END;
  1327.  
  1328. PROCEDURE RemSemaphore(sigSem : pSignalSemaphore);
  1329. BEGIN
  1330.   ASM
  1331.     MOVE.L  A6,-(A7)
  1332.     MOVEA.L sigSem,A1
  1333.     MOVEA.L _ExecBase,A6
  1334.     JSR -606(A6)
  1335.     MOVEA.L (A7)+,A6
  1336.   END;
  1337. END;
  1338.  
  1339. FUNCTION RemTail(list : pList) : pNode;
  1340. BEGIN
  1341.   ASM
  1342.     MOVE.L  A6,-(A7)
  1343.     MOVEA.L list,A0
  1344.     MOVEA.L _ExecBase,A6
  1345.     JSR -264(A6)
  1346.     MOVEA.L (A7)+,A6
  1347.     MOVE.L  D0,@RESULT
  1348.   END;
  1349. END;
  1350.  
  1351. PROCEDURE RemTask(task : pTask);
  1352. BEGIN
  1353.   ASM
  1354.     MOVE.L  A6,-(A7)
  1355.     MOVEA.L task,A1
  1356.     MOVEA.L _ExecBase,A6
  1357.     JSR -288(A6)
  1358.     MOVEA.L (A7)+,A6
  1359.   END;
  1360. END;
  1361.  
  1362. PROCEDURE ReplyMsg(message : pMessage);
  1363. BEGIN
  1364.   ASM
  1365.     MOVE.L  A6,-(A7)
  1366.     MOVEA.L message,A1
  1367.     MOVEA.L _ExecBase,A6
  1368.     JSR -378(A6)
  1369.     MOVEA.L (A7)+,A6
  1370.   END;
  1371. END;
  1372.  
  1373. PROCEDURE SendIO(ioRequest : pIORequest);
  1374. BEGIN
  1375.   ASM
  1376.     MOVE.L  A6,-(A7)
  1377.     MOVEA.L ioRequest,A1
  1378.     MOVEA.L _ExecBase,A6
  1379.     JSR -462(A6)
  1380.     MOVEA.L (A7)+,A6
  1381.   END;
  1382. END;
  1383.  
  1384. FUNCTION SetExcept(newSignals : ULONG; signalSet : ULONG) : ULONG;
  1385. BEGIN
  1386.   ASM
  1387.     MOVE.L  A6,-(A7)
  1388.     MOVE.L  newSignals,D0
  1389.     MOVE.L  signalSet,D1
  1390.     MOVEA.L _ExecBase,A6
  1391.     JSR -312(A6)
  1392.     MOVEA.L (A7)+,A6
  1393.     MOVE.L  D0,@RESULT
  1394.   END;
  1395. END;
  1396.  
  1397. FUNCTION SetFunction(lib : pLibrary; funcOffset : LONGINT; newFunction : tPROCEDURE) : 
  1398. POINTER;
  1399. BEGIN
  1400.   ASM
  1401.     MOVE.L  A6,-(A7)
  1402.     MOVEA.L lib,A1
  1403.     MOVEA.L funcOffset,A0
  1404.     MOVE.L  newFunction,D0
  1405.     MOVEA.L _ExecBase,A6
  1406.     JSR -420(A6)
  1407.     MOVEA.L (A7)+,A6
  1408.     MOVE.L  D0,@RESULT
  1409.   END;
  1410. END;
  1411.  
  1412. FUNCTION SetIntVector(intNumber : LONGINT; interrupt : pInterrupt) : pInterrupt;
  1413. BEGIN
  1414.   ASM
  1415.     MOVE.L  A6,-(A7)
  1416.     MOVE.L  intNumber,D0
  1417.     MOVEA.L interrupt,A1
  1418.     MOVEA.L _ExecBase,A6
  1419.     JSR -162(A6)
  1420.     MOVEA.L (A7)+,A6
  1421.     MOVE.L  D0,@RESULT
  1422.   END;
  1423. END;
  1424.  
  1425. FUNCTION SetSignal(newSignals : ULONG; signalSet : ULONG) : ULONG;
  1426. BEGIN
  1427.   ASM
  1428.     MOVE.L  A6,-(A7)
  1429.     MOVE.L  newSignals,D0
  1430.     MOVE.L  signalSet,D1
  1431.     MOVEA.L _ExecBase,A6
  1432.     JSR -306(A6)
  1433.     MOVEA.L (A7)+,A6
  1434.     MOVE.L  D0,@RESULT
  1435.   END;
  1436. END;
  1437.  
  1438. FUNCTION SetSR(newSR : ULONG; mask : ULONG) : ULONG;
  1439. BEGIN
  1440.   ASM
  1441.     MOVE.L  A6,-(A7)
  1442.     MOVE.L  newSR,D0
  1443.     MOVE.L  mask,D1
  1444.     MOVEA.L _ExecBase,A6
  1445.     JSR -144(A6)
  1446.     MOVEA.L (A7)+,A6
  1447.     MOVE.L  D0,@RESULT
  1448.   END;
  1449. END;
  1450.  
  1451. FUNCTION SetTaskPri(task : pTask; priority : LONGINT) : SHORTINT;
  1452. BEGIN
  1453.   ASM
  1454.     MOVE.L  A6,-(A7)
  1455.     MOVEA.L task,A1
  1456.     MOVE.L  priority,D0
  1457.     MOVEA.L _ExecBase,A6
  1458.     JSR -300(A6)
  1459.     MOVEA.L (A7)+,A6
  1460.     MOVE.L  D0,@RESULT
  1461.   END;
  1462. END;
  1463.  
  1464. PROCEDURE Signal(task : pTask; signalSet : ULONG);
  1465. BEGIN
  1466.   ASM
  1467.     MOVE.L  A6,-(A7)
  1468.     MOVEA.L task,A1
  1469.     MOVE.L  signalSet,D0
  1470.     MOVEA.L _ExecBase,A6
  1471.     JSR -324(A6)
  1472.     MOVEA.L (A7)+,A6
  1473.   END;
  1474. END;
  1475.  
  1476. PROCEDURE StackSwap(newStack : pStackSwapStruct);
  1477. BEGIN
  1478.   ASM
  1479.     MOVE.L  A6,-(A7)
  1480.     MOVEA.L newStack,A0
  1481.     MOVEA.L _ExecBase,A6
  1482.     JSR -732(A6)
  1483.     MOVEA.L (A7)+,A6
  1484.   END;
  1485. END;
  1486.  
  1487. PROCEDURE SumKickData;
  1488. BEGIN
  1489.   ASM
  1490.     MOVE.L  A6,-(A7)
  1491.     MOVEA.L _ExecBase,A6
  1492.     JSR -612(A6)
  1493.     MOVEA.L (A7)+,A6
  1494.   END;
  1495. END;
  1496.  
  1497. PROCEDURE SumLibrary(lib : pLibrary);
  1498. BEGIN
  1499.   ASM
  1500.     MOVE.L  A6,-(A7)
  1501.     MOVEA.L lib,A1
  1502.     MOVEA.L _ExecBase,A6
  1503.     JSR -426(A6)
  1504.     MOVEA.L (A7)+,A6
  1505.   END;
  1506. END;
  1507.  
  1508. FUNCTION SuperState : POINTER;
  1509. BEGIN
  1510.   ASM
  1511.     MOVE.L  A6,-(A7)
  1512.     MOVEA.L _ExecBase,A6
  1513.     JSR -150(A6)
  1514.     MOVEA.L (A7)+,A6
  1515.     MOVE.L  D0,@RESULT
  1516.   END;
  1517. END;
  1518.  
  1519. FUNCTION Supervisor(userFunction : tPROCEDURE) : ULONG;
  1520. BEGIN
  1521.   ASM
  1522.     MOVE.L  A6,-(A7)
  1523.     MOVEA.L userFunction,A5
  1524.     MOVEA.L _ExecBase,A6
  1525.     JSR -030(A6)
  1526.     MOVEA.L (A7)+,A6
  1527.     MOVE.L  D0,@RESULT
  1528.   END;
  1529. END;
  1530.  
  1531. FUNCTION TypeOfMem(address : POINTER) : ULONG;
  1532. BEGIN
  1533.   ASM
  1534.     MOVE.L  A6,-(A7)
  1535.     MOVEA.L address,A1
  1536.     MOVEA.L _ExecBase,A6
  1537.     JSR -534(A6)
  1538.     MOVEA.L (A7)+,A6
  1539.     MOVE.L  D0,@RESULT
  1540.   END;
  1541. END;
  1542.  
  1543. PROCEDURE UserState(sysStack : POINTER);
  1544. BEGIN
  1545.   ASM
  1546.     MOVE.L  A6,-(A7)
  1547.     MOVE.L  sysStack,D0
  1548.     MOVEA.L _ExecBase,A6
  1549.     JSR -156(A6)
  1550.     MOVEA.L (A7)+,A6
  1551.   END;
  1552. END;
  1553.  
  1554. PROCEDURE Vacate(sigSem : pSignalSemaphore; bidMsg : pSemaphoreMessage);
  1555. BEGIN
  1556.   ASM
  1557.     MOVE.L  A6,-(A7)
  1558.     MOVEA.L sigSem,A0
  1559.     MOVEA.L bidMsg,A1
  1560.     MOVEA.L _ExecBase,A6
  1561.     JSR -546(A6)
  1562.     MOVEA.L (A7)+,A6
  1563.   END;
  1564. END;
  1565.  
  1566. FUNCTION Wait(signalSet : ULONG) : ULONG;
  1567. BEGIN
  1568.   ASM
  1569.     MOVE.L  A6,-(A7)
  1570.     MOVE.L  signalSet,D0
  1571.     MOVEA.L _ExecBase,A6
  1572.     JSR -318(A6)
  1573.     MOVEA.L (A7)+,A6
  1574.     MOVE.L  D0,@RESULT
  1575.   END;
  1576. END;
  1577.  
  1578. FUNCTION WaitIO(ioRequest : pIORequest) : SHORTINT;
  1579. BEGIN
  1580.   ASM
  1581.     MOVE.L  A6,-(A7)
  1582.     MOVEA.L ioRequest,A1
  1583.     MOVEA.L _ExecBase,A6
  1584.     JSR -474(A6)
  1585.     MOVEA.L (A7)+,A6
  1586.     MOVE.L  D0,@RESULT
  1587.   END;
  1588. END;
  1589.  
  1590. FUNCTION WaitPort(port : pMsgPort) : pMessage;
  1591. BEGIN
  1592.   ASM
  1593.     MOVE.L  A6,-(A7)
  1594.     MOVEA.L port,A0
  1595.     MOVEA.L _ExecBase,A6
  1596.     JSR -384(A6)
  1597.     MOVEA.L (A7)+,A6
  1598.     MOVE.L  D0,@RESULT
  1599.   END;
  1600. END;
  1601.  
  1602. {$ifdef amiga_overlays}
  1603. PROCEDURE AddMemList(size : ULONG; attributes : ULONG; pri : LONGINT; base : POINTER; 
  1604. const name : String);
  1605. BEGIN
  1606.     AddMemList(size,attributes,pri,base,pas2c(name));
  1607. END;
  1608. FUNCTION FindName(list : pList; const name : String) : pNode;
  1609. BEGIN
  1610.     FindName := FindName(list,pas2c(name));
  1611. END;
  1612. FUNCTION FindPort(const name : String) : pMsgPort;
  1613. BEGIN
  1614.     FindPort := FindPort(pas2c(name));
  1615. END;
  1616. FUNCTION FindResident(const name : String) : pResident;
  1617. BEGIN
  1618.     FindResident := FindResident(pas2c(name));
  1619. END;
  1620. FUNCTION FindSemaphore(const sigSem : String) : pSignalSemaphore;
  1621. BEGIN
  1622.     FindSemaphore := FindSemaphore(pas2c(sigSem));
  1623. END;
  1624. FUNCTION FindTask(const name : String) : pTask;
  1625. BEGIN
  1626.     FindTask := FindTask(pas2c(name));
  1627. END;
  1628. FUNCTION OldOpenLibrary(const libName : String) : pLibrary;
  1629. BEGIN
  1630.     OldOpenLibrary := OldOpenLibrary(pas2c(libName));
  1631. END;
  1632. FUNCTION OpenDevice(const devName : String; unite : ULONG; ioRequest : pIORequest; 
  1633. flags : ULONG) : SHORTINT;
  1634. BEGIN
  1635.     OpenDevice := OpenDevice(pas2c(devName),unite,ioRequest,flags);
  1636. END;
  1637. FUNCTION OpenLibrary(const libName : String; version : ULONG) : pLibrary;
  1638. BEGIN
  1639.     OpenLibrary := OpenLibrary(pas2c(libName),version);
  1640. END;
  1641. FUNCTION OpenResource(const resName : String) : POINTER;
  1642. BEGIN
  1643.     OpenResource := OpenResource(pas2c(resName));
  1644. END;
  1645. PROCEDURE RawDoFmt(formatString : String; dataStream : POINTER; putChProc : 
  1646. tPROCEDURE; putChData : POINTER);
  1647. BEGIN
  1648.     RawDoFmt(pas2c(formatString),dataStream,putChProc,putChData);
  1649. END;
  1650.  
  1651. {$endif}
  1652.  
  1653. END. (* UNIT EXEC *)
  1654.  
  1655. {
  1656.   $Log: exec.pp,v $
  1657.   Revision 1.3  1998/09/14 20:22:32  carl
  1658.     * Several bugfixes by Nils Sjoholm
  1659.  
  1660.   Revision 1.1.1.1  1998/03/25 11:18:47  root
  1661.   * Restored version
  1662.  
  1663.   Revision 1.3  1998/01/26 12:02:42  michael
  1664.   + Added log at the end
  1665.  
  1666.  
  1667.  
  1668.   Working file: rtl/amiga/exec.pp
  1669.   description:
  1670.   ----------------------------
  1671.   revision 1.2
  1672.   date: 1997/12/14 19:02:47;  author: carl;  state: Exp;  lines: +11 -10
  1673.   * small bugfixes
  1674.   ----------------------------
  1675.   revision 1.1
  1676.   date: 1997/12/10 13:48:45;  author: carl;  state: Exp;
  1677.   + exec dynamic library definitions and calls.
  1678.   =============================================================================
  1679. }
  1680.  
  1681.  
  1682.  
  1683.